home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / alldvd.ru.ifs < prev    next >
Text File  |  2005-03-13  |  11KB  |  411 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Yuri Vlasov (<link>wildfish@mail.ru</link>)
  8. Title=alldvd.ru
  9. Description=Import data & picture from ALLDVD.RU
  10. Site=alldvd.ru
  11. Language=RU
  12. Version=1.0 (08.02.2005)
  13. Requires=3.5.0
  14. Comments=
  15. License=
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program alldvd_ru;
  23.  
  24. const
  25.   BaseAddress = 'http://alldvd.ru/php/';
  26.  
  27. var
  28.   MovieName: string;
  29.  
  30. //==============================================================================
  31.   procedure AnalyzePage(Address: string);
  32.   var
  33.     Page: TStringList;
  34.     LineNr: Integer;
  35.     Line: string;
  36.     TextBlock: string;
  37.     BeginPos, EndPos: Integer;
  38.     s: string;
  39.   begin
  40.   Page := TStringList.Create;
  41.   Page.Text := GetPage(Address);
  42.  
  43.   if pos('<strong>╨┼╟╙╦▄╥└╥ ╧╬╚╤╩└</strong>', Page.Text) = 0 then
  44.     begin
  45.     //URL
  46.     if CanSetField(fieldURL) then
  47.       SetField(fieldURL, Address);
  48.  
  49.     AnalyzeVideoPage(Page);
  50.     end
  51.   else
  52.     begin
  53.     PickTreeClear;
  54.     LineNr := FindLine('<img src=../images/trans.gif width=300 height=1 border=0><br><strong>', Page, 0);
  55.     if LineNr > -1 then
  56.       begin
  57.       PickTreeAdd('╨στ≤δⁿ≥α≥√ ∩εΦ±Ωα "'+MovieName+'"', '');
  58.       AddMoviesTitles(Page, LineNr);
  59.       end;
  60.  
  61.     LineNr := FindLine('[1-10]</span>  <a href=', Page, 0);
  62.     if LineNr > -1 then
  63.       begin
  64.       Line := Page.GetString(LineNr);
  65.       s := '[1-10]</span>  <a href=';
  66.       BeginPos := Pos(s, Line) + Length(s);
  67.       EndPos := Pos('>[11-20]</a>', Line);
  68.       s := Copy(Line, BeginPos, EndPos - BeginPos);
  69. //      PickTreeMoreLink(BaseAddress + s);
  70.       PickTreeMoreLink('http://alldvd.ru/php/content.php?group=namedvd&slovo=' + UrlEncode(MovieName) + '&code1=0&page=1');
  71.       end;
  72.  
  73.     if PickTreeExec(Address) then
  74.       AnalyzePage(Address);
  75.     end;
  76.  
  77.   Page.Free;
  78. end;
  79.  
  80. //==============================================================================
  81.   function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  82.   var
  83.     i: Integer;
  84.   begin
  85.   Result := -1;
  86.   if StartAt < 0 then
  87.     StartAt := 0;
  88.   for i := StartAt to List.Count-1 do
  89.     if Pos(AnsiUpperCase(Pattern), AnsiUpperCase(List.GetString(i))) <> 0 then
  90.       begin
  91.       result := i;
  92.       Break;
  93.       end;
  94.   end;
  95.  
  96. //==============================================================================
  97.   procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  98.   var
  99.     Line: string;
  100.     MovieTitle, MovieAddress, s: string;
  101.     StartPos, EndPos: Integer;
  102.   begin
  103.     repeat
  104.     Line := Page.GetString(LineNr);
  105.     s := '<img src=../images/trans.gif width=300 height=1 border=0><br><strong>';
  106.     StartPos := Pos(s, Line);
  107.     if StartPos > 0 then
  108.       begin
  109.       Delete (Line, 1, StartPos + Length(s) - 1);
  110.       MovieTitle := Copy(Line, 1, Pos('</strong>', Line));
  111.       s := '<A href=';
  112.       StartPos := Pos(s, Line);
  113.       if StartPos > 0 then
  114.         begin
  115.         Delete (Line, 1, StartPos + Length(s) - 1);
  116.         MovieAddress := Copy(Line, 1, Pos('><', Line)-1);
  117.  
  118.         HTMLDecode(MovieTitle);
  119.         HTMLRemoveTags(MovieTitle);
  120.         PickTreeAdd(MovieTitle, BaseAddress + MovieAddress);
  121.         end;
  122.       end;
  123.  
  124.     LineNr := LineNr + 1;
  125.     until LineNr > Page.Count;
  126.   end;
  127.  
  128. //==============================================================================
  129.   function GetText (Line: string; sBegin, sEnd: string): string;
  130.   var
  131.     BeginPos, EndPos: Integer;
  132.     s: string;
  133.   begin
  134.   Result := '';
  135.   BeginPos := Pos(sBegin, Line) + Length(sBegin);
  136.   EndPos := Pos(sEnd, Line);
  137.   if (BeginPos = 0) then BeginPos := 1;
  138.   if (EndPos = 0) then EndPos := Length(Line);
  139.  
  140.   s := Copy(Line, BeginPos, EndPos - BeginPos);
  141.   HTMLDecode(s);
  142.   HTMLRemoveTags(s);
  143.   Result := Trim(s);
  144.   end;
  145.  
  146. //==============================================================================
  147.   procedure AnalyzeVideoPage(Page: TStringList);
  148.   var
  149.     Line, Value, Value2, FullValue: string;
  150.     LineNr, MovieLength: Integer;
  151.     BeginPos, EndPos: Integer;
  152.     MovieName, s, sResult: string;
  153.   begin
  154.   s := '<TITLE>DVD Φφ≥σ≡φσ≥-∞απατΦφ - DVD-ΣΦ±Ω: ';
  155.   LineNr := FindLine(s, Page, 0);
  156.   if LineNr = -1 then exit;
  157.  
  158.   // Title
  159.   Line := Page.GetString(LineNr);
  160.   Delete(Line, 1, Pos(s, Line) + Length(s) - 1);
  161.   EndPos := Pos('rus', Line);
  162.   if EndPos = 0 then
  163.     EndPos := Pos(' / ', Line);
  164.   if EndPos = 0 then
  165.     EndPos := Length(Line);;
  166.   s := Copy(Line, BeginPos, EndPos - BeginPos - 1);
  167.   HTMLDecode(s);
  168.   HTMLRemoveTags(s);
  169.   s := Trim(s);
  170.   MovieName := s;
  171.   if CanSetField(fieldTranslatedTitle) then
  172.     SetField(fieldTranslatedTitle, MovieName);
  173.  
  174.   //Original Title
  175.   if CanSetField(fieldOriginalTitle) then
  176.     begin
  177.     Delete(Line, 1, Length(MovieName) - 1);
  178.     BeginPos := Pos('rus', Line) + 3;
  179.     EndPos := Pos(' / ', Line) + 3;
  180.     if BeginPos < EndPos then
  181.       BeginPos := EndPos;
  182.  
  183.     s := Copy(Line, BeginPos, Pos('</TITLE>', Line));
  184.     HTMLDecode(s);
  185.     HTMLRemoveTags(s);
  186.     s := Trim(s);
  187.     SetField(fieldOriginalTitle, s);
  188.     end;
  189.  
  190.   //Actors
  191.   if CanSetField(fieldActors) then
  192.     begin
  193.     s := '┬ ≡εδ ⌡:';
  194.     LineNr := FindLine(s, Page, 0);
  195.     if LineNr <> -1 then
  196.       begin
  197.       Line := Page.GetString(LineNr);
  198.       BeginPos := Pos(s, Line) + Length(s) - 1;
  199.       Delete(Line, 1, BeginPos);
  200.       EndPos := Pos('╨σµΦ±±σ≡√:', Line)-1;
  201.       if EndPos = 0 then EndPos := Length(Line);
  202.       s := Copy(Line, 1, EndPos);
  203.       s := StringReplace(s, '</a>', ',</a>');
  204.       HTMLDecode(s);
  205.       HTMLRemoveTags(s);
  206.       s := Trim(s);
  207.       Delete(s, Length(s), Length(s));
  208.       SetField(fieldActors, s);
  209.       end;
  210.     end;
  211.  
  212.   //Director
  213.   if CanSetField(fieldDirector) then
  214.     begin
  215.     s := '╨σµΦ±±σ≡√:';
  216.     LineNr := FindLine(s, Page, 0);
  217.     if LineNr <> -1 then
  218.       begin
  219.       Line := Page.GetString(LineNr);
  220.       BeginPos := Pos(s, Line) + Length(s) - 1;
  221.       Delete(Line, 1, BeginPos);
  222.       EndPos := Pos('╞αφ≡:', Line)-1;
  223.       if EndPos = 0 then EndPos := Length(Line);
  224.       s := Copy(Line, 1, EndPos);
  225.       s := StringReplace(s, '</a>', ',</a>');
  226.       HTMLDecode(s);
  227.       HTMLRemoveTags(s);
  228.       s := Trim(s);
  229.       if Pos(',', s) = Length(s) then
  230.         Delete(s, Length(s), Length(s));
  231.       SetField(fieldDirector, s);
  232.       end;
  233.     end;
  234.  
  235.   //Category
  236.   if CanSetField(fieldCategory) then
  237.     begin
  238.     s := '╞αφ≡:';
  239.     LineNr := FindLine(s, Page, 0);
  240.     if LineNr <> -1 then
  241.       begin
  242.       Line := Page.GetString(LineNr);
  243.       BeginPos := Pos(s, Line) + Length(s) - 1;
  244.       Delete(Line, 1, BeginPos);
  245.  
  246.       s := Copy(Line, 1, Length(Line));
  247.       sResult := s;
  248.  
  249.       LineNr := LineNr + 1;
  250.       Line := Page.GetString(LineNr);
  251.       while (Pos('<br>', Line) = 0) do
  252.         begin
  253.         sResult := sResult + ',' + Line;
  254.  
  255.         LineNr := LineNr + 1;
  256.         Line := Page.GetString(LineNr);
  257.         end;
  258.  
  259.       HTMLDecode(sResult);
  260.       HTMLRemoveTags(sResult);
  261.       sResult := Trim(sResult);
  262.       SetField(fieldCategory, sResult);
  263.       end;
  264.     end;
  265.  
  266.   //fieldLanguages
  267.   if CanSetField(fieldLanguages) then
  268.     begin
  269.     s := '▀τ√Ω Φ ±≥αφΣα≡≥ τΓ≤Ωα:';
  270.     LineNr := FindLine(s, Page, 0);
  271.     if LineNr <> -1 then
  272.       begin
  273.       LineNr := LineNr + 1;
  274.       Line := Page.GetString(LineNr);
  275.       sResult := '';
  276.       while (Pos('╥Φ∩ ΣΦ±Ωα:', Line)=0) do
  277.         begin
  278.         EndPos := Pos(' - ', Line)-1;
  279.         s := Copy(Line, 1, EndPos);
  280.         if sResult = '' then
  281.           sResult := sResult + s
  282.         else
  283.           sResult := sResult + ', ' + s;
  284.  
  285.         LineNr := LineNr + 1;
  286.         Line := Page.GetString(LineNr);
  287.         end;
  288.  
  289.       HTMLDecode(sResult);
  290.       HTMLRemoveTags(sResult);
  291.       sResult := Trim(sResult);
  292.       SetField(fieldLanguages, sResult);
  293.       end;
  294.     end;
  295.  
  296.   //fieldSubtitles
  297.   if CanSetField(fieldSubtitles) then
  298.     begin
  299.     s := '▀τ√Ω ±≤ß≥Φ≥≡εΓ:';
  300.     LineNr := FindLine(s, Page, 0);
  301.     if LineNr <> -1 then
  302.       begin
  303.       Line := Page.GetString(LineNr);
  304.       BeginPos := Pos(s, Line) + Length(s) - 1;
  305.       Delete(Line, 1, BeginPos);
  306.  
  307.       s := Copy(Line, 1, Length(Line));
  308.       sResult := s;
  309.  
  310.       LineNr := LineNr + 1;
  311.       Line := Page.GetString(LineNr);
  312.       while (Pos('<br>', Line) = 0) do
  313.         begin
  314.         sResult := sResult + ', ' + s;
  315.  
  316.         LineNr := LineNr + 1;
  317.         Line := Page.GetString(LineNr);
  318.         end;
  319.  
  320.       HTMLDecode(sResult);
  321.       HTMLRemoveTags(sResult);
  322.       sResult := Trim(sResult);
  323.       SetField(fieldSubtitles, sResult);
  324.       end;
  325.     end;
  326.  
  327.   //fieldLength
  328.   if CanSetField(fieldLength) then
  329.     begin
  330.     s := '─δΦ≥σδⁿφε±≥ⁿ ΣΦ±Ωα:';
  331.     LineNr := FindLine(s, Page, 0);
  332.     if LineNr <> -1 then
  333.       begin
  334.       Line := Page.GetString(LineNr);
  335.       BeginPos := Pos(s, Line) + Length(s) - 1;
  336.       Delete(Line, 1, BeginPos);
  337.       EndPos := Pos('∞Φφ.', Line)-1;
  338.       if EndPos = 0 then EndPos := Length(Line);
  339.       s := Copy(Line, 1, EndPos);
  340.       HTMLDecode(s);
  341.       HTMLRemoveTags(s);
  342.       s := Trim(s);
  343.       SetField(fieldLength, s);
  344.       end;
  345.     end;
  346.  
  347.   //fieldDescription
  348.   if CanSetField(fieldDescription) then
  349.     begin
  350.     s := '<strong>╩ε≡ε≥Ωε ε ⌠Φδⁿ∞σ</strong>';
  351.     LineNr := FindLine(s, Page, 0);
  352.     if LineNr <> -1 then
  353.       begin
  354.       LineNr := LineNr + 1;
  355.       Line := Page.GetString(LineNr);
  356.       sResult := '';
  357.       while (Pos('</td>', Line)=0) do
  358.         begin
  359.         sResult := sResult + Line;
  360.         LineNr := LineNr + 1;
  361.         Line := Page.GetString(LineNr);
  362.         end;
  363.  
  364.       sResult := StringReplace(sResult, '<br>',#13#10);
  365.       sResult := StringReplace(sResult, '<BR>',#13#10);
  366.       HTMLDecode(sResult);
  367.       HTMLRemoveTags(sResult);
  368.       SetField(fieldDescription, sResult);
  369.       end;
  370.     end;
  371.  
  372.   //Picture
  373.   if CanSetPicture then
  374.     begin
  375.     LineNr := FindLine('<FORM action=../php/zakaz.php method=post target=bin>', Page, 0);
  376.     if LineNr > -1 then
  377.       begin
  378.       Line := Page.GetString(LineNr+1);
  379.       s := '<IMG src="';
  380.       Delete (Line, 1, Pos(s, Line) + Length(s)-1);
  381.       BeginPos := 1;
  382.       EndPos := Pos('JPG', AnsiUpperCase(Line)) + 3;
  383.       if (BeginPos <> 0) and (EndPos <> 0) then
  384.         begin
  385.         s := Copy(Line, BeginPos, EndPos - BeginPos);
  386.         s := Trim(s);
  387.         GetPicture(BaseAddress + s);
  388.         end;
  389.       end;
  390.     end;
  391. end;
  392.  
  393. //==============================================================================
  394. //==============================================================================
  395. //==============================================================================
  396. begin
  397. if CheckVersion(3,5,0) then
  398.   begin
  399.   MovieName := GetField(fieldTranslatedTitle);
  400.   if MovieName = '' then
  401.     MovieName := GetField(fieldOriginalTitle);
  402.  
  403.   if Input('Import from alldvd.ru', 'Enter the title of the movie:', MovieName) then
  404.     begin
  405.     AnalyzePage('http://alldvd.ru/php/content.php?group=namedvd&slovo=' + UrlEncode(MovieName) + '&code1=0&page=0');
  406.     end;
  407.   end
  408. else
  409.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  410. end.
  411.